﻿#pragma once

#ifndef UDP_SOCKET_CPP_LOG
#define HI_DEBUG(format, ...) \
	hi_debug(__FILE__,__FUNCTION__, __LINE__,format, ##__VA_ARGS__);
#endif

extern "C" {
	/*
	 * @brief 有使用者负责实现的日志打印行数
	 * @note 在本行数中，有意没有提供pid，tid及日期等信息， 因为这些信息用户可以自己获取到
	*/
	typedef void (*HI_RTP_DEBUG)(const char* file, const char* function, int line, const char* log);
	
	/*
	 * @brief 设置用户实现的日志输出函数
	 * @param[in] func 用户实现的日志输出函数,可以为空，如果为空，则表示忽略日志。
	 * 
	*/
	void hi_set_debug(HI_RTP_DEBUG func);
	/*
	 * @brief 是否忽略debug
	 * @note 如果忽略debug（默认忽略），可以减少一次局部变量的memset， 提高性能，默认为忽略,
	 *		如果明确调用此函数，则不管hi_set_debug是否设置，都会忽略。
	 *		在调用hi_set_debug且参数不为空，则会将该值设置为【不忽略】
	 * @note 如果未调用hi_set_debug， 而将isIgnore设置为false，则会使用printf进行日志打印
	*/
	void hi_is_ignore_debug(bool isIgnore);
}